---
description: Manage mutations on MS SQL Server with Hasura
keywords:
  - hasura
  - docs
  - ms sql server
  - mutation
slug: index
---

# MS SQL Server: GraphQL Mutations

## Introduction

GraphQL mutations are used to modify data on the server (i.e. write, update or delete data).

Hasura GraphQL Engine auto-generates mutations as part of the GraphQL schema from your MS SQL Server schema model.

Data of all tables in the database tracked by the GraphQL Engine can be modified over the GraphQL endpoint. If you have
a tracked table in your database, its insert/update/delete mutation fields are added as nested fields under the
`mutation_root` root level type.

## Types of mutation requests

The following types of mutation requests are possible:

- [Insert](/mutations/ms-sql-server/insert.mdx)
- [Upsert](/mutations/ms-sql-server/upsert.mdx)
- [Update](/mutations/ms-sql-server/update.mdx)
- [Delete](/mutations/ms-sql-server/delete.mdx)

<!--

TODO: DBCOMPATIBILITY

  .. toctree::
    :maxdepth: 1

    multiple-mutations

 -->

## Other configuration

By default, Hasura treats unset nullable variables with no default as being
nulls. However, according to the GraphQL specification, these values should be
removed from the query. Thus, with the experimental feature flag
[`no_null_unbound_variable_default`](/deployment/graphql-engine-flags/reference.mdx#experimental-features),
users can opt into this behavior.
